using System.ComponentModel.DataAnnotations.Schema;
using System.Data.Entity.ModelConfiguration;

//Importamos
using EventSys.BussinesEntities;

namespace EventSys.Repository.Mapping
{
    public class ParticipanteMap : EntityTypeConfiguration<Participante>
    {
        public ParticipanteMap()
        {
            // Primary Key
            this.HasKey(t => t.idParticipante);

            // Properties
            this.Property(t => t.CodigoUpn)
                .HasMaxLength(6);

            this.Property(t => t.DNI)
                .HasMaxLength(8);

            this.Property(t => t.Nombres)
                .HasMaxLength(50);

            this.Property(t => t.Apellidos)
                .HasMaxLength(50);

            this.Property(t => t.Profesion)
                .HasMaxLength(20);

            this.Property(t => t.CentroEstudios)
                .HasMaxLength(50);

            this.Property(t => t.Grado)
                .HasMaxLength(25);

            this.Property(t => t.Email)
                .HasMaxLength(50);

            this.Property(t => t.Direccion)
                .HasMaxLength(50);

            this.Property(t => t.Telefono)
                .HasMaxLength(20);

            this.Property(t => t.Cargo)
                .HasMaxLength(30);

            this.Property(t => t.CentroLaboral)
                .HasMaxLength(50);

            this.Property(t => t.IdUbigeo)
                .HasMaxLength(50);

            this.Property(t => t.ExperienciaLaboral)
                .HasMaxLength(500);

            this.Property(t => t.GradosyCertificaciones)
                .HasMaxLength(500);

            this.Property(t => t.Especializaciones)
                .HasMaxLength(300);

            this.Property(t => t.Publicaciones)
                .HasMaxLength(300);

            this.Property(t => t.Contraseña)
                .HasMaxLength(30);

            this.Ignore(t => t.confirPass);
            this.Ignore(t => t.ImageMimeType);

            // Table & Column Mappings
            this.ToTable("Participante");
            this.Property(t => t.idParticipante).HasColumnName("idParticipante");
            this.Property(t => t.CodigoUpn).HasColumnName("CodigoUpn");
            this.Property(t => t.DNI).HasColumnName("DNI");
            this.Property(t => t.Nombres).HasColumnName("Nombres");
            this.Property(t => t.Apellidos).HasColumnName("Apellidos");
            this.Property(t => t.Profesion).HasColumnName("Profesion");
            this.Property(t => t.CentroEstudios).HasColumnName("CentroEstudios");
            this.Property(t => t.Grado).HasColumnName("Grado");
            this.Property(t => t.Email).HasColumnName("Email");
            this.Property(t => t.Direccion).HasColumnName("Direccion");
            this.Property(t => t.Telefono).HasColumnName("Telefono");
            this.Property(t => t.Cargo).HasColumnName("Cargo");
            this.Property(t => t.CentroLaboral).HasColumnName("CentroLaboral");
            this.Property(t => t.IdUbigeo).HasColumnName("IdUbigeo");
            this.Property(t => t.ExperienciaLaboral).HasColumnName("ExperienciaLaboral");
            this.Property(t => t.GradosyCertificaciones).HasColumnName("GradosyCertificaciones");
            this.Property(t => t.Especializaciones).HasColumnName("Especializaciones");
            this.Property(t => t.Publicaciones).HasColumnName("Publicaciones");
            this.Property(t => t.Contraseña).HasColumnName("Contraseña");
            this.Property(t => t.foto).HasColumnName("foto");

            // Relationships
            this.HasOptional(t => t.Ubigeo)
                .WithMany(t => t.Participantes)
                .HasForeignKey(d => d.IdUbigeo);

        }
    }
}
